Dịch thuật địa chỉ CPU cache

Hầu hết mục đích của việc cài đặt CPU từ những mẫu của bộ nhớ ảo. Để tóm tắt, kể cả mỗi chương trình chạy trên thiết bị thấy địa chỉ không gian riêng của mình một cách đơn giản hóa,  mà bao gồm trong đó cả mã và dữ liệu cho riêng chương trình đó, hoặc cho tất cả chương trình chạy trong không gian địa chỉ ảo phổ biến. Chương trình sử dụng không gian bộ nhớ ảo trong đó sử dụng địa chỉ ảo mà địa chỉ không gian đó không tồn tạitrong bộ nhớ vật lý. 

Bộ nhớ ảo đòi hỏi bộ vi xử lý dịch địa chỉ ảo được tạo ra bởi chương trình thành các địa chỉ vật lý trong bộ nhớ chính. Phần của bộ vi xử lý hiện dịch thuật này được gọi là đơn vị quản lý bộ nhớ (MMU). Đường dẫn nhanh chóng thông qua MMU có thể thực hiện những bản dịch được lưu trữ trong bộ đệm lookaside dịch (TLB), mà là một bộ nhớ cache của ánh xạ từ hệ thống điều hành trang bảng, phân đoạn bảng hoặc cả hai.

3 tính năng quan trọng của địa chỉ dịch

-Latency (Độ trễ): Địa chỉ vật lý có sẵn từ MMU một số thời gian, có lẽ một vài chu kỳ, sau khi địa chỉ ảo có sẵn từ bộ phận tạo địa chỉ

-Aliasing (khử răng cưa): Nhiều địa chỉ ảo có thể ánh xạ đến một địa chỉ vật lý duy nhất. Hầu hết các vi xử lý đảm bảo rằng tất cả các bản cập nhật cho duy nhất địa chỉ đó sẽ cập nhật theo chương trình. Để đảm bảo, các vi xử lý phải chắc chắn rằng chỉ có duy nhất một bản sao của vị trí đia chỉ vật lý trong Cache tại bất kỳ thời gian nhất định.

-Granularity (sự cấp phát): Không gian địa chỉ ảo được chia vào các trang. Ví dụ, một không gian địa chỉ ảo 4 GB có thể được cắt thành 1,048,576 trang có kích thước 4 KB, trong số đó có thể được ánh xạ tới một cách độc lập. Có thể có nhiều kích cỡ trang được hỗ trợ.

Một số hệ thống bộ nhớ ảo sớm đã rất chậm vì chúng yêu cầu truy cập phải bảng địa chỉ (giữ trong bộ nhớ chính) trước khi mỗi chương trình truy cập vào bộ nhớ chính. Không có bộ nhớ cache, bộ nhớ này cắt tốc độ của thiết ra thành một nử. Bộ nhớ cache phần cứng đầu tiên được dùng trong hệ thống máy tính không thực sự là dữ liệu hoặc bộ nhớ cache, mà hơn thế nữa nó là TLB. 

bốn loại bộ nhớ Cache (dựa trên mục hoặc thẻ phù hợp với bộ nhớ vật lý hoặc bộ nhớ ảo)

-Physically indexed, physically tagged (PIPT) bộ nhớ cache sử dụng địa chỉ vật lý cho cả mục và thẻ. Trong khi nó đơn giản và tránh vấn đề với aliasing, nó cũng chậm, địa chỉ vật lý phải cần được tìm kiếm (có thể kéo theo việc bỏ lỡ TLB và truy cập vào bộ nhớ chính) trước khi địa chỉ có thể tìm kiếm trong bộ nhớ cache.

-Virtually indexed, virtually tagged (VIVT) bộ nhớ caches sử dụng địa chỉ ảo cho cả mục và thẻ. Kế hoạch nơi dự trữ này có thể dẫn đến sự tra cứu nhanh hơn nhiều, khi mà MMU không cần phải tham khảo kết quả trước tiên để xác định địa chỉ vật lý cho địa chỉ ảo. Tuy nhiên, VIVT bị vấn đề răng cưa, nơi nhiều địa chỉ ảo khác nhau có thể đặt vấn đề cho cùng địa chỉ vật lý. Kết quả chỉ ra là địa chỉ như vậy nên lưu trữ riêng mặc dù, gây ra vấn đề dính kết. Vấn đề khác là từ đồng âm khác nghĩa, nơi địa chỉ ảo cùng ánh xạ tới nhiều địa chỉ vật lý khác nhau. Không thể phân biệt các ánh xạ khi này chỉ bằng nhìn mục ảo bản thân, cho dù giải pháp tiềm năng bao gồm: flusing nơi dự trữ sau khi chuyển đổi ngữ cảnh, buộc khoảng trống địa chỉ không được chồng chéo, đánh dấu địa chỉ ảo với ID không gian địa chỉ (ASID), hoặc sử dụng thẻ vật lý. Ngoài ra, có vấn đề các ánh xạ ảo - đến - vật lý có thể thay đổi, nó sẽ đòi hỏi flusing dòng nơi dự trữ, như Vas sẽ không còn hợp lệ.

-Virtually indexed, physically tagged (VIPT) bộ nhớ caches sử dụng địa chỉ ảo cho mục và địa chỉ vật lý trong thẻ. Điểm lợi hơn PIPT là độ trễ, như dòng bộ nhớ cache có thể tìm kiếm song song với dịch thuật TLB, tuy nhiên thẻ không thể bị so sánh cho đến địa chỉ vật lý sẵn sàng. Điểm lợi hơn VIVT là do thẻ có địa chỉ vật lý, bộ nhớ cache có thể phát hiện từ đồng âm khác nghĩa. VIPT đòi hỏi nhiều các mẩu thẻ nhỏ, như mục các mẩu nhỏ không còn đại diện cho cùng địa chỉ.

-Physically indexed, virtually tagged (PIVT) Bộ nhớ caches chỉ là lý thuyết, nhưng so về cơ bản thì nó vô dụng. Cache với cấu trúc này sẽ chậm không kém gì PIPT, bị vấn đề răng cưa cùng một lúc như VIVT.  

Tốc độ của sự lặp lại (sự tiềm tàng vật nặng) là yếu tố quan trọng đến năng suất CPU, cho nên mức - 1 hiện đại nhất của bộ nhớ cache là mục ảo, cho phép tra cứu TLB của MMU để tiến hành song song với dữ liệu ở RAM của bộ nhớ Cache

Nhưng mục ảo không phải là lựa chọn tốt nhất với cho mọi cấp độ của cache. Chi phí của xử lý các phần răng cưa ảo phát triển cùng với kích cỡ cache, và do vậy kết quả cái mà  mức - 2 lớn hơn cache nhất là mục vật lý.. 

Bộ nhớ Caches có lịch sử là đã dùng cả bộ nhớ ảo lẫn bộ nhớ vật lý cho thẻ caches, mặc dù thẻ ảo bây giờ hiếm. Nếu tra cứu TLB có thể kết thúc trước tra cứu bộ nhớ RAM, sau đó địa chỉ vật lý sẵn sàng đúng lúc cho việc so sánh tag, và không cần thẻ ảo. Bộ nhớ lớn lớn, sau đó, có xu hướng trở nên thẻ vật lý, và nhỏ, nơi dự trữ sự tiềm tàng thấp rất gần như được gắn thẻ.CPU đa năng, thẻ ảo đã được thế chỗ bằng vhints, như đã mô tả bên dưới.

Vấn đề "đồng âm" và "đồng âm khác nghĩa"

Bộ nhớ cache nhận ra là chỉ mục ảo và thẻ ảo trở nên không phù hợp sau khi địa chỉ ảo giống hau được ánh xạ vào địa chỉ vật lý khác (từ đồng âm khác nghĩa). Điều này có thể được giải quyết bằng cách sử dụng địa chỉ vật lý cho thẻ hoặc bằng  việc lưu trữ ID không gian địa chỉ trong dòng bộ nhớ Cache

Tuy nhiên latter không giúp chống lại vấn đề từ đồng nghĩa, nơi vài dòng bộ nhớ dừng việc lưu trữ dữ liệu cho địa chỉ vật lý giống nhau. Viết những địa điểm có thể cập nhật chỉ một địa điểm trong nơi dự trữ, rời khỏi địa điểm đó với dữ liệu mâu thuẫn. Vấn đề này có thể là giải quyết bằng cách sử dụng máy bố cục trí nhớ chồng chéo cho khoảng trống địa chỉ khác hoặc nếu không thì bộ nhớ cache (hoặc một phần bộ nhớ) phải flushed khi thay đổi ánh xạ. 

Thẻ ảo và vhints

Lợi thế to lớn của thẻ ảo là, cho bộ nhớ cache kết hợp, chúng để trùng khớp thẻ tiến hành trước khi phiên dịch ảo thành vật lý hoàn thành. Tuy nhiên, gắn kết  nhằm thăm dò và sự trục xuất giới thiệu địa chỉ vật lý cho hành động. Phần cứng có một số các phương tiện của chuyển đổi địa chỉ vật lý vào chỉ mục bộ nhớ cache, nói chung lưu trữ thẻ vật lý cũng như thẻ ảo.

Đối với việc so sánh,  thẻ cache vật lý không cần giữ thẻ ảo, điều này đơn giản. Khi ánh xạ từ ảo sang vật lý bị xoá ra khỏi TLB, mục nhập bộ nhớ đệm với những địa chỉ ảo sẽ phải flushed sau đó. Còn bằng không thì, nếu mục nhập bộ nhớ đệm được phép trên trang không ánh xạ tới bằng TLB, sau đó mục đó sẽ phải flushed khi quyền truy cập trên trang đó được thay đổi trong bảng địa chỉ. 

Hệ điều hành cũng có thể bảo đảm rằng biệt danh ảo không cùng một lúc ở trong bộ nhớ cache. Hệ điều hành bảo đảm này bằng cách thực thi màu trang, thứ được mô tả ở dưới. Một số bộ xử lý RISC (SPARC, RS / 6000) lấy biện pháp này. Nó đã không được dùng gần đây, như chi phí phần cứng phát hiện và biệt danh ảo đã rơi xuống, độ phức tạp phần mềm và hình phạt hiệu năng của màu trang hoàn hảo đã tăng.

Có thể dễ dàng phân biệt hai chức năng của thẻ trong bộ nhớ cache kết hợp: chúng được dùng để xác định cách nào của việc lựa chọn, và chúng được dùng để xác định nếu dữ liệu được tìm thấy trên bộ nhớ đệm hoặc bộ nhớ lỡ. Chức năng thứ 2 luôn phải đúng, nhưng chức năng đầu tiên được phép đoán, và câu trả lời đôi khi sai thỉnh thoảng. 

Một số bộ xử lý (chẳng hạn như SPARCs) có bộ nhớ cache vừa thẻ ảo vừa thẻ vật lý. Thẻ ảo được dùng để lựa chọn cách, và thẻ vật lý được dùng để xác định kết quả hit or miss. Loại bộ nhớ cache này thích sự thuận lợi của độ trễ của bộ nhớ cache thẻ ảo, và giao diện phần mềm đơn giản của bộ nhớ cache thẻ vật lý. Nó tăng thêm chi phí của thẻ lặp lại, tuy nhiên. Hơn nữa, trong xử lý miss, cách thay thế để chỉ dòng bộ nhớ cache phải được thăm dò cho biệt danh ảo và bất kỳ sự trùng khớp.

Lĩnh vực thêm (và một số độ trễ) có thể được giảm nhẹ bằng cách giữ gợi ý ảo với mỗi mục nhập bộ nhớ đệm thay vì thẻ ảo. Gợi ý này là tập hợp con hoặc tập hợp băm của thẻ ảo, và được dùng để chọn một cách bộ nhớ cache từ đó để lấy dữ liệu và thẻ vật lý. 

Giống như bộ nhớ cache thẻ ảo, có thể có trùng khớp gợi ý ảo nhưng không khớp thẻ vật lý, nếu vậy mục nhập bộ nhớ đệm với gợi ý trùng khớp phải evicted sao cho truy cập bộ nhớ cache sau khi tô bộ nhớ cache tại địa chỉ này sẽ có trùng khớp chỉ một gợi ý. Từ khi gợi ý ảo có ít bit hơn là thẻ ảo phân biệt chúng với nhau, bộ nhớ cache ảo gợi ý gần như chịu thiệt hại nhiều nhưng không trúng xung đột hơn bộ nhớ cache thẻ ảo.

Có lẽ sự giảm tối thiểu của gợi ý ảo có thể được tìm thấy trong Pentium 4 (Willamette và Northwood lõi). Trong bộ xử lý này gợi ý ảo là hiệu quả với hai bit, và bộ nhớ cache được thiết lập bốn chiều kết hợp. Nói một cách hiệu quả, phần cứng duy trì phép hoán vị đơn giản từ địa chỉ ảo để bộ nhớ cache chỉ mục, sao cho bộ nhớ cho phép định content-addressable memory (CAM) là cần thiết để chọn đúng một trong bốn cách tìm nạp.